
package taskmanager;

/**
 * Интерфейс планировщика нижнего уровня ведомого сервера
 * позволяет только опрашивать состояние планировщика
 * @author Aleksey ID=2001
 */
public interface ISlaveTaskManager {
    /**
     * Запросить количество задач в планировщике
     * @return число задач в планировщике
     */
    public int getTaskCount();

    /**
     * Проверить наличие задач в планировщике
     * @return true - здач нет, иначе false
     */
    public boolean isEmpty();

    /**
     * Запросить количество активных задач в планировщике
     * @return количество активных задач
     */
    public int getActiveCount();

    /**
     * Проверить наличие свободных позиций для активных задач
     * @return true - заняты все позиции, false - можно активировать задачу
     */
    public boolean isActiveFull();


    /**
     * Запросить задачу
     * @param taskID идентификатор задачи
     * @return задача или null в случае отсутствия
     */
    public JTask getTask(long taskID);

    /**
     * Запросить идентификаторы активных задач
     * @return массив идентификаторов задач
     */
    public long[] getActiveTasks();

    /**
     * Запросить идентификаторы ожидающих и приостановленных задач
     * @return массив идентификаторов задач
     */
    public long[] getWaitTasks();

    /**
     * Запросить идентификаторы задач в планировщике
     * @return массив идентификаторов задач
     */
    public long[] getAllTasks();

    /**
     * Проверить наличие задачи
     * @param taskID идентификатор задачи
     * @return true - задача присутствует, false иначе
     */
    public boolean containsTask(long taskID);

    /**
     * Запросить максимальное количество активных задач
     * @return максимально количество активных задач
     */
    public int getMaxActiveCount();
}
